package com.spring.demo5.factory;

import org.springframework.context.annotation.Condition;

/**
 * 相比于Condition接口的一下处理配置类的整个阶段（配置类解析阶段，bean注册阶段），
 * Configuration接口可以单独处理其中的一个阶段
 *
 * @author vhans
 */
public interface MyConfigurationCondition extends Condition {

    /**
     * 条件判断的阶段，有配置类解析阶段和bean注册阶段
     *
     * @return 阶段的枚举字段
     */
    ConfigurationPhase getConfigurationPhase();

    public static enum ConfigurationPhase {
        PARSE_CONFIGURATION, // 配置类解析阶段，如果条件为false，配置类将不被解析
        REGISTER_BEAN; // bean注册阶段，如果为false，bean将不被注册

        private ConfigurationPhase() {
        }
    }
}
